Carlos Garnacho [Tue, 31 Oct 2017 12:45:41 +0000 (13:45 +0100)]
gtk: s/gdk_event_free/g_object_unref/
Carlos Garnacho [Tue, 31 Oct 2017 12:36:31 +0000 (13:36 +0100)]
gdk/wayland: s/gdk_event_free/g_object_unref/
Carlos Garnacho [Tue, 31 Oct 2017 12:35:11 +0000 (13:35 +0100)]
gdk/x11: s/gdk_event_free/g_object_unref/
Carlos Garnacho [Tue, 31 Oct 2017 12:18:49 +0000 (13:18 +0100)]
gdk: Remove gdk_window_[gs]et_event_compression()
Motion compression is now the unmodifiable default, callers may
call gdk_event_get_motion_history() to check the uncoalesced
motion history.
Carlos Garnacho [Tue, 31 Oct 2017 11:45:37 +0000 (12:45 +0100)]
gtk: Remove CONSTRUCT_ONLY flag from GtkEventControllerScroll::flags
There is a gtk_event_controller_scroll_set_flags() call that's meant
to be called after construction (eg. due to scrolledwindow relayouts
hiding/showing scrollbars). The property shouldn't be construct-only
for consistence.
Carlos Garnacho [Tue, 31 Oct 2017 11:37:50 +0000 (12:37 +0100)]
gdk: Implement motion history as motion event data
In the motion compression phase the coalesced events will be saved
as a GdkTimeCoord on the motion event that shall be delivered.
For simplicity (and because history doesn't make much sense otherwise)
event history is only recorded while there are buttons pressed, this
also tidily ensures that those coalesced events would have the same
target widget on the gtk side than the delivered one, because of
implicit grabs.
Carlos Garnacho [Tue, 31 Oct 2017 11:21:29 +0000 (12:21 +0100)]
gdk: Keep reference on tools from motion/button events.
Carlos Garnacho [Wed, 25 Oct 2017 13:49:19 +0000 (15:49 +0200)]
gdk: Move additional code in gdk_event_new() to GdkEvent::constructed
Now that the type is a construct only property, we can initialize the
event fields properly here.
Carlos Garnacho [Wed, 25 Oct 2017 13:46:47 +0000 (15:46 +0200)]
gdk: Make GdkEvent type a construct only property
So it must be set at the time of doing g_object_new().
Carlos Garnacho [Wed, 25 Oct 2017 12:21:38 +0000 (14:21 +0200)]
gdk: Remove gdk_event_is_allocated()
All events are allocated now.
Carlos Garnacho [Wed, 25 Oct 2017 11:40:28 +0000 (13:40 +0200)]
gtk: Adapt marshallers to GdkEvent as GObject
Carlos Garnacho [Wed, 25 Oct 2017 11:23:41 +0000 (13:23 +0200)]
gdk: Turn GdkEvent into a GObject
Two warts remain. gdk_event_copy() should be unnecessary as
events should be considered static after delivery, so g_object_ref()
should be just as good. There's a few exceptional cases that the event
is copied and then modifier for later processing, those cases should be
reconsidered individually.
And gdk_event_free() could be likewise turned into g_object_unref(),
many callers remain though.
Carlos Garnacho [Wed, 25 Oct 2017 12:06:20 +0000 (14:06 +0200)]
gdk: Remove GdkDisplay from GdkEventPrivate
And add it to GdkEventAny.
Carlos Garnacho [Wed, 25 Oct 2017 11:50:55 +0000 (13:50 +0200)]
gdk: Figure out the GdkSeat of an event from the GdkDevice
Removes the need for gdk_event_set_seat() and the GdkSeat field from
GdkEventPrivate.
Carlos Garnacho [Wed, 25 Oct 2017 10:29:43 +0000 (12:29 +0200)]
gdk: Use allocated events
Stack allocated GdkEvent structs will not be ok when events become
objects.
Carlos Garnacho [Wed, 25 Oct 2017 10:26:32 +0000 (12:26 +0200)]
gtk/a11y: Use allocated events
Using stack allocated GdkEvent will not be ok when they become
objects.
Carlos Garnacho [Wed, 11 Oct 2017 06:42:41 +0000 (08:42 +0200)]
gdk: Fold GdkEventPrivate fields into event structs
Now all events structs are private, it doesn't make as much sense
having GdkEventPrivate wrapping allocating events. This is a first
step towards removing it.
Carlos Garnacho [Wed, 11 Oct 2017 13:55:19 +0000 (15:55 +0200)]
gdk: Remove GdkEventType argument from GdkEvent union
It won't stand true anymore that the GdkEventType argument is the
first field of the GdkEvent* structs. All callers have been updated
to use event->any.type instead.
Carlos Garnacho [Wed, 11 Oct 2017 13:35:29 +0000 (15:35 +0200)]
gdk: Refurbish GdkEvent struct hierarchy
Make all specific event structs contain a GdkEventAny, so the base
struct can be extended without modifying structs all over the place.
Matthias Clasen [Wed, 13 Dec 2017 04:22:32 +0000 (23:22 -0500)]
Redo drag source event handling
Let the gesture itself handle the events.
Benjamin Otte [Wed, 13 Dec 2017 23:43:19 +0000 (00:43 +0100)]
gdk: Remove gdk_selection_convert()
It's not used anymore.
Benjamin Otte [Wed, 13 Dec 2017 22:52:55 +0000 (23:52 +0100)]
dnd: Only send DELETE request on X11
This is Xdnd-specific and doesn't need to happen elsewhere.
Benjamin Otte [Wed, 13 Dec 2017 22:39:02 +0000 (23:39 +0100)]
gdk: Remove ability to own a selection
With this, the GDK_EVENT_SELECTION_REQUEST and GDK_EVENT_SELECTION_CLEAR
and the associated GtkWidget signals are gone, too.
Benjamin Otte [Wed, 13 Dec 2017 18:40:24 +0000 (19:40 +0100)]
tests: Remove testselection
With selections goig away, this test is not very useful anymore.
Benjamin Otte [Wed, 13 Dec 2017 18:37:11 +0000 (19:37 +0100)]
xxx: don't claim dnd selection
Benjamin Otte [Wed, 13 Dec 2017 18:27:51 +0000 (19:27 +0100)]
gdk: Remove gdk_selection_add_targets()
It's not needed anymore, now that we can look at the content provider's
formats.
Alose remove all the API in GTK that was used to set it.
Benjamin Otte [Wed, 13 Dec 2017 17:22:21 +0000 (18:22 +0100)]
x11: Move selection handling to GDK
Instead of claiming the selection in GTK, claim it in the X11 dnd code.
Also handle SelectionRequest and SelectionClear X events there.
Benjamin Otte [Wed, 13 Dec 2017 14:03:53 +0000 (15:03 +0100)]
dnd: Pass content to gdk_drag_begin()
Instead of just passing the GdkContentFormats, we are now passing the
GdkContentProvider to gdk_drag_begin().
This means that GDK itself can now query the data from the provider
directly instead of having to send selection events.
Use this to provide the private API gdk_drag_context_write() that allows
backends to pass an output stream that this data will be written to.
Implement this as the mechanism for providing drag data on Wayland.
And to make this all work, implement a content provider named
GtkDragContent that is implemented by reverting to the old DND
drag-data-get machinery inside GTK, so for widgets everything works just
like before.
Matthias Clasen [Wed, 13 Dec 2017 04:23:17 +0000 (23:23 -0500)]
A forgotten file
These changes belong to the scale button autoscrollling
commit.
Matthias Clasen [Wed, 13 Dec 2017 04:21:26 +0000 (23:21 -0500)]
Make sure events have displays
This seems to be necessary if you want to call
gdk_display_put_event on them.
Matthias Clasen [Wed, 13 Dec 2017 03:55:48 +0000 (22:55 -0500)]
toolbar: Stop using legacy event signals
We can reuse the button gesture here.
Matthias Clasen [Wed, 13 Dec 2017 03:21:43 +0000 (22:21 -0500)]
scalebutton: Add autoscrolling
Use the smooth autoscrolling that the scale can do,
and at the same time stop using legacy event signals.
Matthias Clasen [Wed, 13 Dec 2017 03:18:19 +0000 (22:18 -0500)]
button: Add private api to get at the gesture
Attaching another gesture from the outside does not
work currently, so let widgets share their button's
gesture for now.
Matthias Clasen [Wed, 13 Dec 2017 03:17:49 +0000 (22:17 -0500)]
range: Add private api to autoscroll
This will be used to scroll the scale in scale buttons.
Matthias Clasen [Wed, 13 Dec 2017 01:49:31 +0000 (20:49 -0500)]
path bar: Drop non-functional hold-to-scroll code
Scrolling a path bar is of marginal usefulness - you need to
find a really deep place in your filesystem hierarchy in order
to scroll one or two places at best. And the code we had for
this was not working. And it was using legacy event handlers.
Instead of fixing it, remove it.
Benjamin Otte [Wed, 13 Dec 2017 00:53:17 +0000 (01:53 +0100)]
x11: Refactor xevent filtering some more
We now have a GdkX11Display::xevent signal that gets emitted for every
XEvent and allows you to interrupt processing via TRUE/FALSE return
values.
These return values to correspond to GDK_FILTER_REMOVE and
GDK_FILTER_CONTINUE respectively.
The GDK_FILTER_TRANSLATE case from gdk_window_add_filter() is now meant
to be handled via gdk_display_put_event().
Matthias Clasen [Wed, 13 Dec 2017 00:13:52 +0000 (19:13 -0500)]
widget-factory: Avoid a legacy event handler
We can use a gesture instead, here.
Benjamin Otte [Wed, 13 Dec 2017 00:09:32 +0000 (01:09 +0100)]
x11: Use GdkX11Display::translate-event more
Benjamin Otte [Tue, 12 Dec 2017 23:56:05 +0000 (00:56 +0100)]
x11: Make clipboard use translate-event signal
Benjamin Otte [Tue, 12 Dec 2017 23:47:07 +0000 (00:47 +0100)]
gdk: Clean up marshalers
Don't generate marshallers that are not needed.
Use the default ones if they exist.
Benjamin Otte [Tue, 12 Dec 2017 23:43:30 +0000 (00:43 +0100)]
x11: Add GdkX11Display:translate-event signal
This is supposed to replace gdk_window_add_filter() in the long run.
Benjamin Otte [Tue, 12 Dec 2017 23:39:32 +0000 (00:39 +0100)]
x11: Constify XEvent usage
Benjamin Otte [Tue, 12 Dec 2017 23:35:16 +0000 (00:35 +0100)]
gdk: Remove gdk_event_put(), peek() etc
We don't want to treat events like they don't belong to displays. So
instead, people should use gdk_display_put/peek/get_event().
Benjamin Otte [Tue, 12 Dec 2017 14:25:34 +0000 (15:25 +0100)]
x11: Refactor code
This is in preparation for DND.
It moves a lot of code from gdkclipboard-x11.c to
gdkselectionoutputstream-x11.c to untangle it from GdkX11Clipboard
usage.
Benjamin Otte [Tue, 12 Dec 2017 02:00:03 +0000 (03:00 +0100)]
gdk: Remove unused function
Fun fact: This function was never used.
Matthias Clasen [Tue, 12 Dec 2017 19:49:44 +0000 (14:49 -0500)]
a11y: drop the focus tracker
This code was doing horrible things, and the atk documentation
for the focus tracking feature says that this is deprecated and
not used anymore. So lets not do it.
Matthias Clasen [Tue, 12 Dec 2017 18:56:15 +0000 (13:56 -0500)]
placesview: Make middle click work
This does not cost us much, and improves consistency.
Matthias Clasen [Tue, 12 Dec 2017 16:04:49 +0000 (11:04 -0500)]
Deprecate many legacy event signals
Mark the following signals as deprecated:
event, event-after, button-press-event, button-release-event,
touch-event, scroll-event, motion-notify-event, enter-notify-event,
leave-notify-event, property-notify-event, selection-clear-event,
selection-request-event, selection-notify-event, selection-received,
selection-get, proximity-in-event, proximity-out-event. Most
of these have suitable replacements in event controllers and
gestures already. The selection-related signals will soon be
irrelevant when selection handling moves to GDK.
Set G_ENABLE_DIAGNOSTIC=1 to see deprecation
warnings for uses of these signals.
Matthias Clasen [Tue, 12 Dec 2017 15:38:11 +0000 (10:38 -0500)]
Install gtkeventcontrollermotion.h
Public headers need to be listed in gtk/meson.build.
This was overlooked when I added the controller.
Piotr Drąg [Tue, 12 Dec 2017 15:33:22 +0000 (16:33 +0100)]
Update POTFILES.in
Matthias Clasen [Tue, 12 Dec 2017 15:23:48 +0000 (10:23 -0500)]
Add GtkEventControllMotion to the docs
Matthias Clasen [Tue, 12 Dec 2017 00:27:35 +0000 (19:27 -0500)]
paned: Stop using motion notify
We can use the new motion event controller that
was introduced for this purpose.
Matthias Clasen [Tue, 12 Dec 2017 00:00:24 +0000 (19:00 -0500)]
about dialog: Stop using event-after as well
We can just use a multipress gesture for this purpose.
Matthias Clasen [Mon, 11 Dec 2017 23:46:47 +0000 (18:46 -0500)]
about dialog: Stop using motion notify
We can use the new motion event controller for this.
Matthias Clasen [Mon, 11 Dec 2017 23:30:22 +0000 (18:30 -0500)]
label: Use GtkEventControllerMotion
This lets us avoid legacy event signals here.
Matthias Clasen [Mon, 11 Dec 2017 23:29:33 +0000 (18:29 -0500)]
Add a simple motion eventcontroller
This can serve as a replacement for the legacy
event signals for enter/leave/motion notify.
Matthias Clasen [Mon, 11 Dec 2017 05:02:21 +0000 (00:02 -0500)]
Try to make a composite entry
This is an attempt to see how much work is needed to
reproduce entry icons by just putting an entry and images
in a box, with some css glue.
Benjamin Otte [Mon, 11 Dec 2017 21:58:33 +0000 (22:58 +0100)]
placessidebar: Don't use root coordinates
Benjamin Otte [Mon, 11 Dec 2017 21:55:54 +0000 (22:55 +0100)]
dnd: Pass device, not event
You don't start a dnd operation with a device, you start it with an
event.
Benjamin Otte [Mon, 11 Dec 2017 21:34:13 +0000 (22:34 +0100)]
dnd: No longer allow passing -1
Nobody ever does that and special cases are evil.
Benjamin Otte [Mon, 11 Dec 2017 21:26:26 +0000 (22:26 +0100)]
dnd: Remove button argument from drag_begin()
It was unused.
Matthias Clasen [Mon, 11 Dec 2017 03:15:12 +0000 (22:15 -0500)]
calendar: Stop using a legacy event handler
Replace the motion_notify handler by a drag gesture.
Matthias Clasen [Mon, 11 Dec 2017 02:17:13 +0000 (21:17 -0500)]
Adwaita: Set an icon size for drag icons
This makes drag icons set from icon names come out
at a size that it large enough to not disappear under
the drag cursor.
Matthias Clasen [Mon, 11 Dec 2017 02:16:31 +0000 (21:16 -0500)]
Set a style class for drag icons
This lets us use the new icon-size machinery to
ensure we don't have tiny drag icons when using
named icons.
Benjamin Otte [Mon, 11 Dec 2017 00:45:31 +0000 (01:45 +0100)]
gdk: Remove gdk_drag_manage_dnd()
Instead, pass the actions as part of gdk_drag_begin() and insist DND is
always managed.
A new side effect is that gdk_drag_begin() can now return %NULL.
Benjamin Otte [Sun, 10 Dec 2017 23:59:14 +0000 (00:59 +0100)]
dnd: No point in determining the keyboard
We only use the pointer.
Benjamin Otte [Sun, 10 Dec 2017 23:55:56 +0000 (00:55 +0100)]
dnd: Pass dx/dy instead of x_root/y_root
This way, we don't need root coordinates when computing the dnd start
position.
Benjamin Otte [Sun, 10 Dec 2017 23:17:36 +0000 (00:17 +0100)]
dnd: Make gdk_drag_context_set_device() private
There's no need to call it from GTK anymore, because we pass the device
to gdk_drag_begin().
Benjamin Otte [Sun, 10 Dec 2017 19:18:08 +0000 (20:18 +0100)]
calendar: Don't request drag data on every motion event
At least wait until we've received the previous one.
Benjamin Otte [Sun, 10 Dec 2017 13:20:59 +0000 (14:20 +0100)]
gdk: Remove outdated gdk_drag_begin() alternatives
There's only one that's ever used, so delete the others and rename this
one to gdk_drag_begin().
Matthias Clasen [Sun, 10 Dec 2017 19:05:01 +0000 (14:05 -0500)]
link button: Set a drag icon
It is a bit odd to drag nothing around, so set an icon.
Matthias Clasen [Sun, 10 Dec 2017 04:59:31 +0000 (23:59 -0500)]
docs: Don't mention css for setting cursors
We don't have a plan to make this work, so lets not
talk about it in the docs.
Matthias Clasen [Sun, 10 Dec 2017 04:48:35 +0000 (23:48 -0500)]
entry: Allocate the progress bar only what it needs
We were allocating the progress bar to the full size
of the entry. This made entry icons loose their cursors,
since they were 'covered' by the progress bar, even though
it doesn't draw anything there.
Colomban Wendling [Mon, 20 Feb 2017 16:39:40 +0000 (17:39 +0100)]
Fix updating the widget accessible description when using its tooltip
We need to notify ATK the description changed when the tooltip text associated
with the widget changes and gtk_widget_accessible_get_description() would use
it as the description.
https://bugzilla.gnome.org/show_bug.cgi?id=779009
Daniel van Vugt [Fri, 15 Sep 2017 09:49:12 +0000 (17:49 +0800)]
Fix irregular gdk_frame_clock_get_frame_time
This fixes stuttering in animations that rely on the regularity of
gdk_frame_clock_get_frame_time.
https://bugzilla.gnome.org/show_bug.cgi?id=787665
BEFORE
gdkgears:
58 FPS and visibly stuttering
gnome-maps on a 59.95Hz monitor:
"paint" g_get_monotonic_time +17278μs, gdk_frame_clock_get_frame_time +17278μs
"paint" g_get_monotonic_time +17449μs, gdk_frame_clock_get_frame_time +17426μs
"paint" g_get_monotonic_time +17620μs, gdk_frame_clock_get_frame_time +17600μs
AFTER
gdkgears:
60 FPS and smoother
gnome-maps on a 59.95Hz monitor:
"paint" g_get_monotonic_time +18228μs, gdk_frame_clock_get_frame_time +16680μs
"paint" g_get_monotonic_time +15010μs, gdk_frame_clock_get_frame_time +16680μs
"paint" g_get_monotonic_time +17134μs, gdk_frame_clock_get_frame_time +16680μs
Benjamin Otte [Sun, 10 Dec 2017 00:33:38 +0000 (01:33 +0100)]
dnd: Remove "delete" argument from gtk_drag_finish()
The argument is ignored by anything but X11.
It's treated like suggested_action == MOVE.
So do that in gtk_drag_finish(), too.
Benjamin Otte [Sun, 10 Dec 2017 00:05:37 +0000 (01:05 +0100)]
dnd: Introduce gdk_drop_read_async() and use it
This is the replacement for selection usage.
Backend implementations for X11 (missing support for backwards compat
formats like COMPOUND_TEXT) and Wayland are included.
GTK code should be adapted to use gdk_drop_read_*() functions instead
of gtk_drag_get_data().
Benjamin Otte [Sun, 10 Dec 2017 00:04:32 +0000 (01:04 +0100)]
gdk: Fix wrong usage of g_task_propagate_pointer()
The return value is transfer full, not transfer none.
Benjamin Otte [Tue, 5 Dec 2017 04:16:49 +0000 (05:16 +0100)]
clipboard: Add the useful stuff from reverted commit
This is the parts of
dc50e0637ffa8bc7a369d00a5d8e7656d03c3781 that
should have been committed but were reverted in
b5c62cf86fe37e05ce2a0ae050df2a229457676b to unbreak the build.
Benjamin Otte [Tue, 5 Dec 2017 16:30:58 +0000 (17:30 +0100)]
dnd: Add gdk_drag_context_get_display()
Also turn it into a readable, construct-only property.
Every GDK object should have this. (Apart from GdkDisplay, obviously.)
Benjamin Otte [Tue, 5 Dec 2017 14:44:00 +0000 (15:44 +0100)]
gdk: Include gio.h in gdktypes.h
It's where we include all our external dependencies.
This way, we don't have to include it in all headers again and again.
Carlos Garnacho [Sat, 9 Dec 2017 20:13:05 +0000 (21:13 +0100)]
gtkwindow: Allow edge resizing from corners if constraints forbid either side
The fix is twofold. First, when checking that a corner is resizable, we must
check the constraints on both edges. Second, when checking either edge we
must include both perpendicular sides in order to allow those to be
resizable when the constraint does not allow resizing the edge being
checked.
Carlos Garnacho [Sat, 9 Dec 2017 16:33:44 +0000 (17:33 +0100)]
gtkwindow: Use shadow border when calculating resize areas positions
This way resize areas are correctly positioned right outside the visible
window edge on all sides.
Carlos Garnacho [Sat, 9 Dec 2017 16:32:02 +0000 (17:32 +0100)]
gtkwindow: Do not account handle size when checking content area
This is necessary to bring back the L-shaped resize corners. On all edges
(not corners) the handle width is determined by the border size.
Rico Tzschichholz [Sat, 9 Dec 2017 14:36:35 +0000 (15:36 +0100)]
Fix some parameter name mismatches to make g-ir-scanner happier
Matthias Clasen [Sat, 9 Dec 2017 13:33:21 +0000 (08:33 -0500)]
Switch the order for cursor lookup
When looking for the cursor to apply, start from the innermost
widget and go up. This is the right behavior for cases like
entry icons. The top-down order we were using so far is the
right behavior for cases like global wait cursors. Since we
have entry icons in gtk, but not global wait cursors, lets
pick the other order for now.
Timm Bäder [Fri, 8 Dec 2017 15:46:46 +0000 (16:46 +0100)]
treeview: Don't draw background twice
This is done unconditionally for all widgets these days.
Timm Bäder [Wed, 6 Dec 2017 14:54:19 +0000 (15:54 +0100)]
recorder: Show rounded clip node corner size info
Timm Bäder [Fri, 8 Dec 2017 15:58:06 +0000 (16:58 +0100)]
snapshot: Don't create blur nodes with radius 0
Timm Bäder [Wed, 6 Dec 2017 14:53:15 +0000 (15:53 +0100)]
snapshot: Collapse color matrix nodes
Color matrix nodes as the child of other color matrix nodes can happen
quite frequently as a result of CSS. To ease the renderer
implementations, collapse chains of color matrix nodes into one.
Timm Bäder [Sat, 9 Dec 2017 12:14:00 +0000 (13:14 +0100)]
Fix a few overlooked casts
glib warns about these now.
Matthias Clasen [Sat, 9 Dec 2017 02:09:24 +0000 (21:09 -0500)]
paned: Grab during the drag
This is necessary to ensure we get the right cursor.
Marco Trevisan (Treviño) [Thu, 7 Dec 2017 22:00:01 +0000 (17:00 -0500)]
cssshadowvalue: don't apply the y_scale offset twice to the shadow
As per commit
942e904 this changed causing a regression that
seems to be visible only when scale > 2.
https://bugzilla.gnome.org/show_bug.cgi?id=791363
Matthias Clasen [Fri, 8 Dec 2017 22:48:47 +0000 (17:48 -0500)]
Fix fallout from g_object_ref change
g_object_ref now returns the type of the object that was
passed. Introduce cast as necessary to avoid warnings due
to this.
Timm Bäder [Fri, 8 Dec 2017 20:07:41 +0000 (21:07 +0100)]
css node tests: Update expected output
Matthias Clasen [Fri, 8 Dec 2017 16:29:14 +0000 (11:29 -0500)]
Fix fallout from the show-close-button rename
I had overlooked ui files. We should really
validate those during build.
Philip Withnall [Fri, 17 Nov 2017 10:32:02 +0000 (10:32 +0000)]
mir: Fix potential use of NULL GDBusConnection
If we fail to connect to the session bus, it would be a bit silly to
immediately try and use that NULL connection.
Signed-off-by: Philip Withnall <withnall@endlessm.com>
https://bugzilla.gnome.org/show_bug.cgi?id=668590
Matthias Clasen [Fri, 8 Dec 2017 03:36:29 +0000 (22:36 -0500)]
Rename GtkHeaderBar::show-close-button
It is about all window buttons, so rename it to ::show-title-buttons.
https://bugzilla.gnome.org/show_bug.cgi?id=779862
Jonas Ådahl [Fri, 1 Dec 2017 08:03:34 +0000 (16:03 +0800)]
wayland: Destroy the xdg_imported after the wl_surface
This way the window manager can handle destruction while having the
transient-for relationship still valid.
https://bugzilla.gnome.org/show_bug.cgi?id=791062
Jonas Ådahl [Fri, 1 Dec 2017 04:18:30 +0000 (12:18 +0800)]
wayland: Maybe postpone xdg-foreign state setup until mapping
In order to map a window with the correct initial parent-child
relationship when a modal dialog is set up to be a child of an imported
foreign window, the relationship must be set up before the window is
mapped.
In order to do this, if a window is not yet mapped, postpone the
relationship setup until when the window is eventually mapped.
https://bugzilla.gnome.org/show_bug.cgi?id=791062